package com.sunfeng.demo01;


/**
 * @description:
 * @author: 孙 峰
 * @time: 2020/11/3 12:54
 */
public class BinarySearch {

    private BinarySearch() {
    }

    public static void main(String[] args) {
        System.out.println(Math.abs(-2147483648));
    }

    /**
     *  二分查找算法
     *  数组必须是有序的 必须保证数组里面的数据是按顺序排列的
     * @param a
     * @param key
     * @return
     */
    public static int indexOf(int[] a, int key) {
        int lo = 0;
        int hi = a.length - 1;

        while (lo <= hi) {
            //被查找的键要么不存在，要么必然存在于  每次循环寻找中位数
            int mid = lo + (hi - lo) / 2;
            if (key < a[mid]) hi = mid - 1;
            else if (key > a[mid]) lo = mid + 1;
            else return mid;
        }
        return -1;
    }


}
